package model;

import dataXML.Element;
import dataXML.Zapytanie;
import datamodel.OkresCzasu;
import datamodel.Osoba;
import datamodel.Rezerwacja;
import datamodel.Sala;

// #[regen=yes,id=DCE.2853CDF1-E59F-2D93-D280-4C151C3193D7]
import datamodel.ZbiorRezerwacji;
// </editor-fold> 
import java.util.ArrayList;
public class FabrykaRezerwacji {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.C5D220D1-CC7A-41D7-344F-6539A1290792]
    // </editor-fold> 
    private static FabrykaRezerwacji uniqueInstance;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.390AF70A-4C86-CD6C-7903-76F19A72ADF7]
    // </editor-fold> 
    private FabrykaRezerwacji () {
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.DA5609CD-7C39-ECB3-BB63-68A4927407D5]
    // </editor-fold> 
    public static FabrykaRezerwacji instance () {
        if (uniqueInstance == null ){
            uniqueInstance = new FabrykaRezerwacji();
        }
        return uniqueInstance;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.3026B72A-2267-5624-059D-0BFBA5AE3BD0]
    // </editor-fold> 
    /**
     * 
     * @param idSali
     * @param powod
     * @param idRezerwujacego - w sumie nie wiem jeszcze z kąd to ma się brać
     * @param nazwaRezerwujacego - to też nie - to trzeba zrobić
     * @param czyZarezerwowana 
     * @param czas - stringi wyglądają tak : "<rok>.<miesiac>.<dzien>.<godzina>.<minuta>-<rok>.<miesiac>.<dzien>.<godzina>.<minuta>", logicznie : "poczatek-koniec"
     * @return
     */
    public Rezerwacja StworzRezerwacje (
        String idSali, String powod, String idRezerwujacego,
        String nazwaRezerwujacego, boolean czyZarezerwowana,
        String czas) {
        Rezerwacja rezerwacja = new Rezerwacja();
        OkresCzasu okresCzasu = new OkresCzasu(czas);
        Sala sala = new Sala(idSali);
 
        Osoba osoba = new Osoba(nazwaRezerwujacego, idRezerwujacego);
        
        
        rezerwacja.setCzas(okresCzasu);
        rezerwacja.setZarezerwowana(czyZarezerwowana);
        rezerwacja.setRezerwujacy(osoba);
        rezerwacja.setSala(sala);        
        rezerwacja.setPowod(powod);
        
        
        
        return rezerwacja;
    } 
    
    public ZbiorRezerwacji StworzZbiorRezerwacji (Zapytanie zapytanie){
      
        ArrayList<Element> elements = (ArrayList<Element>) zapytanie.getElementy();
        
        ZbiorRezerwacji zbiorRezerwacji = new ZbiorRezerwacji();
        
        
        return zbiorRezerwacji;
    } 


}

